Corporations characteristically use applications executing on computer systems to automate their business functions. The applications typically contain parts that deal with the user interface, parts that deal with business processes, parts that deal with programming logic, and parts that deal with data. The applications are typically built to operate on a single computer platform. In this context, a computer platform includes the programs, or software, to perform the various tasks required of a computer, as well as the machine, or hardware, that hosts these programs.
Given the large amount of business functions that need to be automated within a corporation, applications are often centralized on one single platform. From a hardware point of view, such platforms include large and powerful computers such as mini-computers or mainframes. On the software side, such platforms often take the form of all-encompassing environments that meet all of the application development needs, such as Information Management System/Virtual Storage (IMS/VS) from International Business Machines Corporation (IBM). In the IMS/VS model, the various conceptual layers constituting an application are bundled together in one single piece or a small number of inter-dependent pieces. This single-tier model is well understood, reliable, and secure. It facilitates control and limits overhead.
The proprietary nature of the host platform, however, leads to severe economic disadvantages. Initial platform costs are sizable, and subsequent growth is limited by the capacity of the hardware and software components of the platform that hosts the application. Furthermore, application maintenance and enhancement is a complex and cumbersome process. Application users are removed from application developers, increasing the gap between requirements and implementation. Changes to one part of the application also require compatible changes to the other parts of the application. Finally, data access and communication standards are limited to those supported by the host platform.
The advent of desktop computing in the form of the personal computer provides an initial solution to the above problems by enabling corporations to depart from the centralized platform model. To maximize the usage of their computer resources, applications can be distributed among different platforms. This distributed system approach can take many forms, the most widespread of which is known as the two-tiered client/server architecture. This two-tiered model divides the application between two platforms: a client and a server. At a high level, clients and servers are software concepts. A client makes requests from servers, while servers provide adequate services to fulfill client requests. Client hosts are typically personal computers, while server hosts are typically mini-computers or mainframe computers.
In the client/server model, the presentation part of the application is usually located on the client platform and the data part of the application is found on the server platform, with the business process and functionality parts of the application merged into either of the other two layers. This model is more economical than the single-tier model, with less or no hardware lock-in. The division into two tiers is also more flexible to user interface changes. On the other hand, the proprietary nature of the platform is still present at the level of the software.